package com.example.demo.manager.inf;

/**
 * @Description
 * @Author <a href="hedong.wu@baozun.com">wuhedong</a>
 * @Date 2020/5/26 16:38
 **/
public interface CanalManager<T> {

    /**
     * 删除时候调用
     * @param data 删除的值
     * @return  是否处理成功
     */
    boolean doOnDelete(T data);

    /**
     * 更新的时候调用
     * @param beforeData 以前的值
     * @param afterData  更新后的值
     * @return  更新后的结果
     */
    boolean doOnUpdate(T beforeData, T afterData);

    /**
     * 增加的时候调用
     * @param data 增加的值
     * @return 是否处理成功
     */
    boolean doOnAdd(T data);


    /**
     * 获取持有的class
     * @return 返回
     */
    Class<T> getHandleClass();
}
